package com.lyf.scm.admin.api.dto;

import com.lyf.scm.common.model.BaseSearchDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * description:
 *        需求计划
 * @author: haodong
 * @data: 2020/8/7 16:37
 */
@Data
@ApiModel("需求计划DTO")
public class SalesPlanDTO extends BaseSearchDTO {

    @ApiModelProperty("主键id")
    private Long id;

    @ApiModelProperty("需求计划单号")
    private String demandPlanNo;

    @ApiModelProperty("销售计划金额")
    private BigDecimal salesPlanAmount;

    @ApiModelProperty("预测计划金额")
    private BigDecimal forecastPlanAmount;

    @ApiModelProperty("销售计划量")
    private BigDecimal salesPlanQty;

    @ApiModelProperty("预测计划量")
    private BigDecimal forecastPlanQty;

    @ApiModelProperty("安全库存量")
    private BigDecimal safetyStockQty;

    @ApiModelProperty("上次确认量")
    private BigDecimal lastConfirmQty;

    @ApiModelProperty("预约在途采购量")
    private BigDecimal reservePurchaseQty;

    @ApiModelProperty("实际销量")
    private BigDecimal actualSalesQty;

    @ApiModelProperty("未履约采购量")
    private BigDecimal noFulfilPurchaseQty;

    @ApiModelProperty("计划开始日期")
    private Date planStartDate;

    @ApiModelProperty("计划结束日期")
    private Date planEndDate;

    @ApiModelProperty("采购单位")
    private Long unitType;

    @ApiModelProperty("参数对象")
    private List<SalesPlanDTO> salesPlanDTOS;
    /** 计划确认等级，有2、3、4级，如果不是这三个则给默认4级 */
    private int confirmLevel;
    /** 区域聚合等级：1、2、3、4，规则是如果没选查询条件则按权限的最末级聚合，如果选了查询条件则按查询条件的最末一级聚合 */
    private int areaAggregationLevel;

    /**
     * 条件存在与否
     */
    @ApiModelProperty("是否含大品类")
    private Boolean existPriCate;

    @ApiModelProperty("是否含中品类")
    private Boolean existSecCate;

    @ApiModelProperty("是否含小品类")
    private Boolean existTerCate;

    @ApiModelProperty("是否含sku")
    private Boolean existSkuCate;

    @ApiModelProperty("是否含渠道")
    private Boolean existChannel;

    @ApiModelProperty("是否含计划类型")
    private Boolean existPlanType;

    @ApiModelProperty("是否含省")
    private Boolean existPro;

    @ApiModelProperty("是否含市")
    private Boolean existCity;

    @ApiModelProperty("是否含区")
    private Boolean existCount;

    @ApiModelProperty("是否含门店")
    private Boolean existStore;

    @ApiModelProperty("父渠道code集合")
    private List<String> channel;

    @ApiModelProperty("计划类型（1-经销中心营销计划、2-云商营销计划、3-新开店计划（直营门店）、4-新开店计划（加盟门店）、5-新品铺货计划（直营门店）、6-新品铺货计划（云商）、7-新品铺货计划（APP）、8-新品铺货计划（经销中心））集合")
    private List<String> planTypeList;
}
